package com.nuorui.module.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuorui.common.core.domain.ResponseDTO;
import com.nuorui.common.core.enums.ConfigKeyEnum;
import com.nuorui.module.system.domain.entity.ConfigEntity;
import com.nuorui.module.system.domain.form.ConfigForm;
import com.nuorui.module.system.domain.query.ConfigQueryForm;
import com.nuorui.module.system.domain.vo.ConfigVO;

/**
 * 配置管理
 *
 * @author: Fred
 * @email 453086@qq.com
 * @create: 2021-10-22 10:42
 */
public interface ConfigService extends IService<ConfigEntity> {

    /**
     * 分页
     *
     * @param page
     * @param queryForm
     * @return
     */
    ResponseDTO<IPage<ConfigVO>> getConfigsPage(Page page, ConfigQueryForm queryForm);

    /**
     * 新增配置
     *
     * @param configForm
     * @return
     */
    ResponseDTO<String> saveConfig(ConfigForm configForm);

    /**
     * 更新配置
     *
     * @param configId
     * @param configForm
     * @return
     */
    ResponseDTO<String> updateConfig(Long configId, ConfigForm configForm);

    /**
     * 删除配置
     *
     * @param configId
     * @return
     */
    ResponseDTO<String> removeConfig(Long configId);

    /**
     * 根据key更新配置值
     *
     * @param key
     * @param value
     * @return
     */

    ResponseDTO updateValueByKey(ConfigKeyEnum key, String value);

    /**
     * 根据key获取配置值
     *
     * @param key
     * @return
     */
    String getConfigValue(ConfigKeyEnum key);
}
